/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Factory;

/**
 *
 * @author David
 * @param parametre nécessaire!: 1, 2 ou 3
 */
public class Factory {

    public static void main(String[] args) {
        //Solution fonctionnel mais dupliquée
        Program1 p1 = new Program1 ( ) ;
        Program2 p2 = new Program2 ( ) ;
        Program3 p3 = new Program3 ( ) ;
        System.out.println( " Je.suis.le.main1" ) ;
        
        
        switch (Integer.parseInt(args[0])){
            case 1: p1.go(); break;
            case 2: p2.go(); break;
            case 3: p3.go(); break;
            default:  break;
        }
        
        //une seule instance de programme
        ProgramN pN;
        switch (Integer.parseInt(args[0])){
            case 1: pN = new Program1(); pN.go();break;
            case 2: pN = new Program2(); pN.go(); break;
            case 3: pN = new Program2(); pN.go(); break;
            default:  break;
        }
        
        //C'est le factory qui se gere d'instancier la bonne classe
        ProgramInterface p = ProgramFactory.start(Integer.parseInt(args[0]));
        p.go();
        
        //il est aisé de faire un program 4, il suffit d'augmenter le switch ds la factory
        
        
    }

}
